package com.lyl.serviceedu;

import java.util.*;

public class MstJh {
    public static void main(String[] args) {
        // List  Set  Map
        // set: 无序不可重复  list: 有序可重复
//        List :ArrayList  LinkedList   Vector  有序可重复,
        ArrayList arrayList= new ArrayList(10);
        new LinkedList<>();
        Map<String,Object> map= new HashMap<>(10);
        //ArrayList: 线程不安全的-->
        //1.底层数据结构基于
        // java数组, 通过下标访问, 读取数据快, 删除,插入非常慢, 因为后面所有数据都要挪动位置

//        Vector: 线程安全的

//        LinkedList: 与arraylist差不多, 唯一的区别 数据存储的结构不一样
        // 节点的数据结构, 链表, 插入,删除非常快, (因为不用挪动位置), 查找比较慢
//        List list= new LinkedList();
//        list.get(5);

//        Set set= new HashSet();-- > 引用了hashMap key实现方式

        Map map1= new HashMap();// 默认的大小
        map1.put("111","111");

        System.out.println(map1.size());
        //1.hashmap  初始化大小 16
        //2. 扩容机制 增长因子   16*0.75= 12  2倍
        //3. 线程不安全  效率高



        // 4. 数据结构-->    Node<K,V>[] table;  链表+ 数组 + 红黑树
        //  node<> 链表数组  第一次放值得时候 容量是16, 每一次put数据的时候,会根据key值的
        // hash值算出node数组的下标, 如果没有值就直接放到数组中, 如果有值就就判断是否是普通树
        // 与红黑树, 如果是普通树, 就直接尾插法加入到链表中, 如果是红黑树,算出位置加入到红黑树中,
        // 链表的长度如果超过8 ,并且链表数组的长度超过64 就会转换为红黑树

        for (int i = 0; i < 127; i++) {
            System.out.println(i+"="+(char)i);

        }
       ;
        System.out.println( "北".hashCode());
   // Hashtable:

        map1= new Hashtable();

//        byte b= (byte)128 ;// 1个字节   8位   -2^7   2^7-1
        // int 4字节  32位   -2^31    ----> 2^31-1
        //
        // 2* 2* 2*     2*2* 2    * 2 == 64* 2= 128


//        System.out.println(b);


//        A a= new A();
//        System.out.println(a.getName());


//        A.B b= new A.B();

    }
}
